package cn.lbd.arithmetic.leetcode.editor.cn;
//给出一个 32 位的有符号整数，你需要将这个整数中每位上的数字进行反转。
//
// 示例 1: 
//
// 输入: 123
//输出: 321
// 
//
// 示例 2: 
//
// 输入: -123
//输出: -321
// 
//
// 示例 3: 
//
// 输入: 120
//输出: 21
// 
//
// 注意: 
//
// 假设我们的环境只能存储得下 32 位的有符号整数，则其数值范围为 [−231, 231 − 1]。请根据这个假设，如果反转后整数溢出那么就返回 0。 
// Related Topics 数学 
// 👍 2143 👎 0


//leetcode submit region begin(Prohibit modification and deletion)
class Solution7 {
    public int reverse(int x) {
        final int MIN = -(1 << 31);
        final int MAX = (1 << 31) - 1;
        String str = String.valueOf(x);
        StringBuilder builder = new StringBuilder();
        if (str.charAt(0) == '-') {
            builder.append("-");
        }
        if ("0".equals(str)) {
            return 0;
        }
        for (int i = str.length() - 1; i >= 0; i--) {
            if (str.charAt(i) == '-') {
                continue;
            }
            if (str.charAt(i) == '0' && i == str.length() - 1) {
                continue;
            }
            builder.append(str.charAt(i));
        }
        Long reserveNum = Long.valueOf(builder.toString());
        if (reserveNum < MIN || reserveNum > MAX) {
            return 0;
        }
        int reserveNum1 = reserveNum.intValue();
        return reserveNum1;
    }

   /* public static void main(String[] args) {
        Solution solution = new Solution();
        System.out.println(solution.reverse(1534236469));
    }*/
}
//leetcode submit region end(Prohibit modification and deletion)
